package practice1;


/**
 * 将10进制数转成二进制，找出其中有多少个1
 * @author Tara
 * @implNote
 */
public class Pra7 {

    public static void main(String[] args) {
        int N = 13257423;
        findCounts(N);

    }
    private static void findCounts(int n) {
        // 计数
        int count = 0;
        //每次都抹去最后一个1
        while (n >0){
            int rithtOne = n & (~n +1);
            //抹掉最后一个1
            n^=rithtOne;
            //思考，为什么抹掉最后一个1，用异或，不用-rightOne ???  答：因为如果N为负数的时候，会出问题。
            count++;
        }
        System.out.println("有"+count);
    }
}
